package net.sos.playground;

import java.awt.BorderLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;

public class SimpleInternalFrame extends JFrame {

   private static final long serialVersionUID = 1L;
   
   JButton openButton, macButton, javaButton, motifButton, winButton;
   JLayeredPane desktop;
   JInternalFrame internalFrame;

   public SimpleInternalFrame( ) {
     super("Internal Frame Demo");
     setSize(500,400);
     openButton = new JButton("Open");
     macButton = new JButton("Mac");
     javaButton = new JButton("Metal");
     motifButton = new JButton("Motif");
     winButton = new JButton("Windows");
     Panel p = new Panel( );
     p.add(openButton);
     p.add(macButton);
     p.add(javaButton);
     p.add(motifButton);
     p.add(winButton);
     add(p, BorderLayout.SOUTH);
     addWindowListener(new WindowAdapter( ) {
       public void windowClosing(WindowEvent e) {
         System.exit(0);
       }
     });
     openButton.addActionListener(new OpenListener( ));
     LnFListener lnf = new LnFListener(this);
     macButton.addActionListener(lnf);
     javaButton.addActionListener(lnf);
     motifButton.addActionListener(lnf);
     winButton.addActionListener(lnf);

     // Set up the layered pane.
     desktop = new JDesktopPane( );
     desktop.setOpaque(true);
     add(desktop, BorderLayout.CENTER);
   }

   // An inner class to handle presses of the Open button
   class OpenListener implements ActionListener {
     public void actionPerformed(ActionEvent e) {
       if ((internalFrame == null) || (internalFrame.isClosed( ))) {
         internalFrame = new JInternalFrame("Internal Frame", 
                                            true, true, true, true);
         internalFrame.setBounds(50, 50, 200, 100);
         desktop.add(internalFrame, new Integer(1));
         internalFrame.setVisible(true);
        }
     }
   }

   public static void main(String args[]) {
     SimpleInternalFrame sif = new SimpleInternalFrame( );
     sif.setVisible(true);
   }
 }